Apex Security Salesforce প্ল্যাটফর্মে Apex কোডের নিরাপত্তা নিশ্চিত করার জন্য বিভিন্ন কৌশল এবং নিয়মাবলি সংরক্ষণ করে। Apex Security ডেটার সুরক্ষা, ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণ, এবং কোডের কার্যক্ষমতা নির্ভরযোগ্য করার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে। Salesforce-এ ডেটা সুরক্ষা এবং এক্সেস নিয়ন্ত্রণ নিশ্চিত করতে শেয়ারিং রুলস, ফিল্ড-লেভেল সিকিউরিটি, ইনপুট ভ্যালিডেশন ইত্যাদি ব্যবহৃত হয়।
Sharing Rules Apex ক্লাসে ব্যবহারকারী বা প্রোফাইল অনুযায়ী ডেটা এক্সেস নিয়ন্ত্রণ করে। Salesforce-এ With Sharing এবং Without Sharing কিওয়ার্ড ব্যবহার করে Apex ক্লাসে ডেটা অ্যাক্সেস নিয়ন্ত্রণ করা হয়।
public with sharing class AccountController {
public List<Account> getAccounts() {
return [SELECT Id, Name FROM Account];
}
}
Field-Level Security (FLS) Apex কোডে ফিল্ড-লেভেল অ্যাক্সেস নিয়ন্ত্রণ করে। এটি ব্যবহারকারীর প্রোফাইল অনুযায়ী নির্দিষ্ট ফিল্ডগুলো অ্যাক্সেস সীমাবদ্ধ রাখে।
public class AccountFLS {
public void createAccount(Account acc) {
if (Schema.sObjectType.Account.fields.Name.isCreateable()) {
insert acc;
} else {
throw new CustomException('Insufficient permission to create account name.');
}
}
}
Name
ফিল্ডে ব্যবহারকারী অ্যাক্সেস আছে কি না তা যাচাই করা হয়েছে।CRUD (Create, Read, Update, Delete) Permissions নিশ্চিত করে যে ব্যবহারকারী নির্দিষ্ট অবজেক্ট বা রেকর্ডে CRUD অপারেশন সম্পন্ন করার অনুমতি রাখে। Apex কোডে CRUD অনুমতি যাচাই করতে isCreateable(), isUpdateable(), isDeletable(), এবং isAccessible() ব্যবহার করা হয়।
public class AccountCRUD {
public void updateAccount(Account acc) {
if (Schema.sObjectType.Account.isUpdateable()) {
update acc;
} else {
throw new CustomException('Insufficient permission to update account.');
}
}
}
Account
অবজেক্টে ব্যবহারকারী আপডেট করার অনুমতি রাখে কি না তা যাচাই করা হয়েছে।SOQL ইনজেকশন হলো এমন একটি পদ্ধতি, যা অনিরাপদ ইনপুট ব্যবহার করে ডেটাবেস অ্যাটাকের সম্ভাবনা সৃষ্টি করে। SOQL ইনজেকশন প্রতিরোধে সবসময় ইনপুট স্যানিটাইজ করা উচিত এবং bind variables ব্যবহার করে ইনপুট সরাসরি SOQL স্টেটমেন্টে যুক্ত করা উচিত নয়।
public class AccountQuery {
public List<Account> getAccounts(String accountName) {
String sanitizedAccountName = String.escapeSingleQuotes(accountName);
return [SELECT Id, Name FROM Account WHERE Name = :sanitizedAccountName];
}
}
Cross-Site Scripting (XSS) প্রতিরোধ: HTML Encode ব্যবহার করে স্ক্রিপ্ট ইনজেকশন রোধ করুন।
String sanitizedInput = EncodingUtil.urlEncode(userInput, 'UTF-8');
URL Redirection Validation: কোনো URL রিডাইরেকশন করার সময় URL ভ্যালিডেট করে ইনজেকশন রোধ করুন।
Exception Handling এবং Logging: Exception Handling নিশ্চিত করুন এবং অনুমোদিত ডেটা বা তথ্য লগে প্রদর্শন করুন, যা Unauthorized Access প্রতিরোধে সহায়ক।
Use Custom Permissions: Custom Permissions ব্যবহার করে নির্দিষ্ট কোড বা ফিচারে অ্যাক্সেস নিয়ন্ত্রণ করুন।
Encryption Techniques ব্যবহার করুন: সংবেদনশীল ডেটা নিরাপদ রাখতে Salesforce-এ Encryption Technique ব্যবহার করুন।
Field-Level এবং CRUD Permissions যাচাই করুন: প্রতিটি SOQL ও DML অপারেশন করার আগে FLS এবং CRUD অনুমতি যাচাই করুন।
With Sharing ব্যবহার করুন: যেখানে প্রয়োজন সেখানে With Sharing ব্যবহার করুন, যাতে Apex ক্লাস শেয়ারিং নিয়ম মেনে চলে।
Input Sanitization এবং Validation: ইনপুট স্যানিটাইজ করে ইনজেকশন প্রতিরোধ নিশ্চিত করুন এবং ব্যবহারকারীর ইনপুট যাচাই করুন।
Session Management: গুরুত্বপূর্ণ API কল এবং থার্ড-পার্টি ইন্টিগ্রেশনের জন্য সেশন এবং Authorization Token ব্যবহারে সতর্ক থাকুন।
Testing এবং Code Review: Code Review এবং Security Testing এর মাধ্যমে কোডের সুরক্ষা নিশ্চিত করুন।
Apex Security Salesforce প্ল্যাটফর্মে ডেটা সুরক্ষা, ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণ, এবং ডেটা ইনজেকশন প্রতিরোধ নিশ্চিত করতে সাহায্য করে। Apex Security টেকনিক যেমন Sharing Rules, Field-Level Security, CRUD Permissions, এবং SOQL Injection প্রতিরোধ করে Salesforce অ্যাপ্লিকেশনকে আরো নিরাপদ এবং নির্ভরযোগ্য করে তোলে।
Salesforce-এ Apex Security Best Practices অনুসরণ করে অ্যাপ্লিকেশনের ডেটা, লজিক, এবং ব্যবহারকারীর নিরাপত্তা নিশ্চিত করা হয়। Apex কোড নিরাপদভাবে লিখতে হলে কিছু নির্দিষ্ট পদ্ধতি এবং নিয়ম মেনে চলা অত্যন্ত গুরুত্বপূর্ণ, যা ডেটার নিরাপত্তা ও অ্যাপ্লিকেশনের কার্যক্ষমতা বৃদ্ধি করে।
With Sharing এবং Without Sharing কিওয়ার্ড ব্যবহার করুন
public with sharing class AccountController {
// কোড শেয়ারিং নিয়ম মেনে চলবে
}
SOQL ইনজেকশন থেকে বাঁচুন
String accountName = 'Acme';
Account acc = [SELECT Id FROM Account WHERE Name = :accountName];
CRUD এবং FLS (Field Level Security) চেক করুন
if (Schema.sObjectType.Account.isAccessible()) {
Account acc = [SELECT Id, Name FROM Account LIMIT 1];
}
Insecure Direct References (IDOR) এড়িয়ে চলুন
Avoid Hardcoding Sensitive Data
Use Named Credentials for External Services Integration
HttpRequest req = new HttpRequest();
req.setEndpoint('callout:MyNamedCredential/api/endpoint');
Exception Handling যুক্ত করুন
try {
// কোড
} catch (DmlException e) {
System.debug('An error occurred: ' + e.getMessage());
}
Avoid Using "SeeAllData=true" in Test Classes
Prevent Cross-Site Scripting (XSS)
<apex:outputText value="{!account.Name}" escape="true"/>
Avoid Excessive Debug Logging in Production
Apex Security Best Practices অনুসরণ করে Salesforce অ্যাপ্লিকেশন সুরক্ষিত এবং নির্ভরযোগ্য রাখা যায়। Sharing কিওয়ার্ড, SOQL ইনজেকশন থেকে রক্ষা, CRUD এবং FLS চেক, Named Credentials, এবং Exception Handling-এর মতো সিকিউরিটি পদ্ধতি ব্যবহার করে অ্যাপ্লিকেশনকে নিরাপদ ও কার্যক্ষম রাখা সম্ভব হয়। Salesforce ডেভেলপমেন্টে এই সিকিউরিটি প্র্যাকটিস অনুসরণ করা একটি ভালো এবং প্রয়োজনীয় অভ্যাস।
Object-Level, Field-Level, এবং Record-Level Security Salesforce-এ ডেটা অ্যাক্সেস নিয়ন্ত্রণের তিনটি স্তর, যা ব্যবহারকারীর প্রোফাইল, ভূমিকা, এবং অনুমতি অনুযায়ী ডেটা অ্যাক্সেস নিয়ন্ত্রণ করে। এই তিনটি স্তরের নিরাপত্তা নিশ্চিত করে যে ব্যবহারকারী শুধু প্রয়োজনীয় এবং অনুমোদিত ডেটা দেখতে এবং অ্যাক্সেস করতে পারবেন।
Object-Level Security ব্যবহারকারীর নির্দিষ্ট অবজেক্টে (যেমন Account, Contact, Opportunity ইত্যাদি) অ্যাক্সেস নির্ধারণ করে। এই নিরাপত্তা স্তরটি নির্ধারণ করে যে ব্যবহারকারী কোন অবজেক্টে CRUD (Create, Read, Update, Delete) অপারেশন করতে পারবেন।
Apex কোডে Object-Level Security যাচাই করতে Schema.sObjectType.<Object>.isAccessible()
, isCreateable()
, isUpdateable()
, এবং isDeletable()
মেথড ব্যবহার করা হয়।
public class AccountService {
public void createAccount(Account acc) {
if (Schema.sObjectType.Account.isCreateable()) {
insert acc;
} else {
throw new CustomException('Insufficient permissions to create Account.');
}
}
}
Field-Level Security নির্দিষ্ট ফিল্ডের উপর অ্যাক্সেস নিয়ন্ত্রণ করে, যা নির্ধারণ করে ব্যবহারকারী কোন ফিল্ড দেখতে, তৈরি করতে, আপডেট করতে পারবেন। এটি Object-Level Security এর উপর একটি বাড়তি স্তর যা ফিল্ড ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ করে।
Apex কোডে Field-Level Security যাচাই করতে Schema.sObjectType.<Object>.fields.<Field>.isAccessible()
, isCreateable()
, এবং isUpdateable()
মেথড ব্যবহার করা হয়।
public class AccountService {
public void updateAccountIndustry(Account acc) {
if (Schema.sObjectType.Account.fields.Industry.isUpdateable()) {
update acc;
} else {
throw new CustomException('Insufficient permissions to update Industry field.');
}
}
}
Industry
ফিল্ড আপডেট করার অনুমতি আছে কি না।Record-Level Security নির্দিষ্ট রেকর্ডের উপর অ্যাক্সেস নিয়ন্ত্রণ করে। এটি নির্ধারণ করে ব্যবহারকারী কোন রেকর্ড দেখতে, সম্পাদনা করতে বা মুছে ফেলতে পারবেন। Record-Level Security ডেটা শেয়ারিং মডেলের উপর ভিত্তি করে কাজ করে এবং প্রোফাইল, পারমিশন সেট, বা রোল হায়ারার্কির উপর নির্ভর করে।
Record-Level Security যাচাই করতে Apex ক্লাসে with sharing বা without sharing কিওয়ার্ড ব্যবহার করা হয়।
public with sharing class AccountService {
public List<Account> getUserAccounts() {
return [SELECT Id, Name FROM Account];
}
}
with sharing
কিওয়ার্ড ব্যবহার করে নিশ্চিত করা হয়েছে যে ক্লাসটি শেয়ারিং নিয়ম মেনে চলবে এবং শুধু ব্যবহারকারীর অনুমোদিত রেকর্ডগুলোই অ্যাক্সেস করতে পারবে।নিরাপত্তা স্তর | উদ্দেশ্য | কনফিগারেশন উপায় | Apex কোড যাচাই |
---|---|---|---|
Object-Level Security | অবজেক্টের উপর CRUD অপারেশন নিয়ন্ত্রণ করে | Profiles এবং Permission Sets | isCreateable(), isAccessible(), isUpdateable() |
Field-Level Security | নির্দিষ্ট ফিল্ডে এক্সেস নিয়ন্ত্রণ করে | Profiles এবং Permission Sets | isAccessible(), isCreateable(), isUpdateable() |
Record-Level Security | নির্দিষ্ট রেকর্ডে এক্সেস নিয়ন্ত্রণ করে | OWD, Role Hierarchies, Sharing Rules | with sharing, without sharing |
Object-Level এবং Field-Level Security যাচাই করুন: প্রতিটি SOQL এবং DML অপারেশনের আগে Object-Level এবং Field-Level Security যাচাই করুন।
if (Schema.sObjectType.Account.isAccessible() && Schema.sObjectType.Account.fields.Name.isAccessible()) {
Account acc = [SELECT Id, Name FROM Account LIMIT 1];
}
with sharing ব্যবহার করুন: যেখানে সম্ভব with sharing
ব্যবহার করুন, যাতে ক্লাসে শেয়ারিং নিয়ম মেনে ডেটা অ্যাক্সেস নিশ্চিত করা যায়।
Exception Handling: যথাযথ Exception Handling যুক্ত করুন এবং অনুমতি না থাকলে ব্যবহারকারীকে Custom Error Message প্রদান করুন।
Minimal Permissions: প্রোফাইল এবং পারমিশন সেটে ন্যূনতম প্রয়োজনীয় পারমিশন প্রদান করুন।
Custom Permissions ব্যবহার করুন: কোডের নির্দিষ্ট অংশে এক্সেস নিয়ন্ত্রণের জন্য Custom Permissions ব্যবহার করতে পারেন।
Object-Level, Field-Level, এবং Record-Level Security Salesforce প্ল্যাটফর্মে ডেটা অ্যাক্সেস নিয়ন্ত্রণের বিভিন্ন স্তর, যা ডেটা সুরক্ষা নিশ্চিত করে। প্রোফাইল, পারমিশন সেট, এবং শেয়ারিং নিয়ম ব্যবহার করে প্রতিটি স্তরের নিরাপত্তা নিশ্চিত করা হয়। Object-Level Security নির্দিষ্ট অবজেক্টে CRUD অ্যাক্সেস নিয়ন্ত্রণ করে, Field-Level Security নির্দিষ্ট ফিল্ডের উপর ভিত্তি করে এক্সেস নিয়ন্ত্রণ করে, এবং Record-Level Security নির্দিষ্ট রেকর্ডের উপর ভিত্তি করে ডেটা এক্সেস নিয়ন্ত্রণ নিশ্চিত করে। নিরাপদ ও সুরক্ষিত কোড নিশ্চিত করতে এই সিকিউরিটি নিয়মগুলো মেনে Apex কোড লিখতে হবে।
CRUD (Create, Read, Update, Delete) এবং FLS (Field Level Security) চেকিং Salesforce-এ একটি নিরাপদ এবং সুরক্ষিত অ্যাপ্লিকেশন তৈরি করার জন্য অপরিহার্য। Apex কোডের মধ্যে CRUD এবং FLS চেক ব্যবহার করে নিশ্চিত করা হয় যে ব্যবহারকারীর কাছে ডেটা এবং ফিল্ডের উপর যথাযথ অনুমোদন রয়েছে কিনা। এর ফলে Salesforce অ্যাপ্লিকেশনে সঠিক নিরাপত্তা নিশ্চিত হয় এবং অপ্রত্যাশিত ডেটা লিক বা নিরাপত্তা ঝুঁকি কমানো যায়।
CRUD চেকিং ব্যবহার করে Apex কোডে যাচাই করা হয় যে, ব্যবহারকারী নির্দিষ্ট Object-এর উপর Create, Read, Update, বা Delete অনুমোদন রয়েছে কিনা। এটি সুরক্ষা নিশ্চিত করতে গুরুত্বপূর্ণ, কারণ একটি রেকর্ড বা অবজেক্টের উপর যথাযথ অনুমোদন না থাকলে ব্যবহারকারী সেই রেকর্ডটি অ্যাক্সেস বা পরিবর্তন করতে পারবে না।
নীচের উদাহরণে Account
অবজেক্টে CRUD অনুমোদন চেক করা হয়েছে।
if (Schema.sObjectType.Account.isAccessible()) {
Account acc = [SELECT Id, Name FROM Account LIMIT 1];
System.debug('Account accessible to current user');
}
if (Schema.sObjectType.Account.isCreateable()) {
Account newAcc = new Account(Name = 'Test Account');
insert newAcc;
System.debug('Account created');
}
if (Schema.sObjectType.Account.isUpdateable()) {
Account acc = [SELECT Id FROM Account LIMIT 1];
acc.Name = 'Updated Account Name';
update acc;
System.debug('Account updated');
}
if (Schema.sObjectType.Account.isDeletable()) {
Account acc = [SELECT Id FROM Account LIMIT 1];
delete acc;
System.debug('Account deleted');
}
FLS চেকিং ব্যবহার করে Apex কোডে যাচাই করা হয় যে, ব্যবহারকারী নির্দিষ্ট Field অ্যাক্সেস করার অনুমতি রাখে কিনা। এটি নিশ্চিত করে যে ব্যবহারকারী শুধুমাত্র অনুমোদিত ফিল্ড দেখতে বা সম্পাদনা করতে পারে এবং অপ্রয়োজনীয় বা সংবেদনশীল ফিল্ডে অ্যাক্সেস পাবে না।
নীচে Account
অবজেক্টে Name এবং Industry ফিল্ডের জন্য FLS চেক করা হয়েছে।
Account acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
// Field Level Security চেক
if (Schema.sObjectType.Account.fields.Name.isAccessible()) {
System.debug('Account Name: ' + acc.Name);
}
if (Schema.sObjectType.Account.fields.Industry.isUpdateable()) {
acc.Industry = 'Technology';
update acc;
System.debug('Account Industry updated');
}
নিরাপত্তা নিশ্চিত করা: CRUD এবং FLS চেকিং নিশ্চিত করে যে ব্যবহারকারীর কাছে কেবলমাত্র অনুমোদিত ডেটা এবং ফিল্ডের এক্সেস রয়েছে, যা ডেটা লিক হওয়া থেকে রক্ষা করে।
অ্যাক্সেস কন্ট্রোল বজায় রাখা: ব্যবহারকারীর অনুমতি অনুযায়ী ডেটা এবং ফিল্ডে এক্সেস কন্ট্রোল বজায় রাখে, যা সার্ভারের কার্যক্ষমতা উন্নত করে।
SOX এবং HIPAA-এর মতো নীতি অনুসরণ করা: অনেক কোম্পানি নিয়ন্ত্রণ এবং সুরক্ষার জন্য সিকিউরিটি নীতি অনুসরণ করে। CRUD এবং FLS চেকিং নিশ্চিত করে যে এসব নীতির শর্ত পূরণ হচ্ছে।
কোডের স্থায়িত্ব: অনুমোদিত ডেটা এবং ফিল্ডে এক্সেসের মাধ্যমে কোড আরও স্থিতিশীল এবং নির্ভরযোগ্য হয়।
CRUD এবং FLS চেকিং সর্বদা যুক্ত করুন: Apex কোডে CRUD এবং FLS চেকিং অন্তর্ভুক্ত করুন, বিশেষ করে যেখানে SOQL, DML, বা Field Access ব্যবহৃত হয়েছে।
গভর্নর লিমিট মেনে চলুন: CRUD এবং FLS চেকিং করার সময় গভর্নর লিমিটের মধ্যে থেকে কোড অপ্টিমাইজ করার চেষ্টা করুন।
Test Classes-এ সিকিউরিটি চেকিং অন্তর্ভুক্ত করুন: CRUD এবং FLS সিকিউরিটি চেকিং অ্যাসার্ট করার জন্য Test Class তৈরি করুন।
Sensitive Data হ্যান্ডলিং-এর ক্ষেত্রে বিশেষ সতর্কতা অবলম্বন করুন: সেনসিটিভ ফিল্ড যেমন Social Security Number (SSN), API Keys ইত্যাদি হ্যান্ডল করার সময় FLS চেকিং নিশ্চিত করুন।
CRUD এবং FLS চেকিং Salesforce-এ সুরক্ষিত অ্যাপ্লিকেশন তৈরি করতে অপরিহার্য, যা ব্যবহারকারীর অনুমোদন অনুযায়ী ডেটা এবং ফিল্ডের অ্যাক্সেস নিয়ন্ত্রণ করে। Apex কোডে CRUD এবং FLS চেকিং অন্তর্ভুক্ত করে ডেটার নিরাপত্তা, অ্যাপ্লিকেশন কার্যক্ষমতা, এবং নির্ভরযোগ্যতা নিশ্চিত করা যায়। Salesforce ডেভেলপমেন্টে CRUD এবং FLS চেকিং ব্যবহার করা একটি ভালো অভ্যাস এবং একটি নিরাপদ অ্যাপ্লিকেশন তৈরির অন্যতম গুরুত্বপূর্ণ পদক্ষেপ।
Apex Sharing Rules এবং Security Considerations Salesforce-এ ডেটা সুরক্ষার জন্য গুরুত্বপূর্ণ। Sharing Rules Apex কোডে ব্যবহারকারীর রোল, প্রোফাইল, এবং নির্দিষ্ট শেয়ারিং নিয়ম অনুযায়ী রেকর্ডের অ্যাক্সেস নিয়ন্ত্রণ করে, যা নিশ্চিত করে যে ব্যবহারকারী শুধুমাত্র অনুমোদিত ডেটা দেখতে ও অ্যাক্সেস করতে পারবে। Apex ক্লাসে শেয়ারিং নিয়মগুলো ব্যবহারের সময় নিরাপত্তার বিষয়গুলো বিবেচনা করা গুরুত্বপূর্ণ।
Sharing Rules Apex কোডে নির্দিষ্ট রেকর্ড বা ডেটার উপর অ্যাক্সেস নিয়ন্ত্রণ করতে সহায়ক। Apex ক্লাসে With Sharing এবং Without Sharing কিওয়ার্ড ব্যবহার করে শেয়ারিং নিয়ম মেনে চলা বা এড়ানো সম্ভব হয়।
With Sharing কিওয়ার্ড ব্যবহার করে Apex ক্লাসে শেয়ারিং নিয়ম মেনে চলা নিশ্চিত করা হয়, যা ব্যবহারকারীর নির্ধারিত শেয়ারিং নিয়ম এবং রোল ভিত্তিক অ্যাক্সেস সীমাবদ্ধতা অনুযায়ী ডেটা ফিল্টার করে।
public with sharing class AccountService {
public List<Account> getAccounts() {
return [SELECT Id, Name FROM Account];
}
}
Without Sharing কিওয়ার্ড ব্যবহার করে Apex ক্লাসে শেয়ারিং নিয়ম এড়িয়ে যাওয়া হয়, যা ক্লাসকে সমস্ত রেকর্ডে অ্যাক্সেস দেয়। এটি সাধারণত তখন ব্যবহার করা হয়, যখন অ্যাডমিনিস্ট্রেটিভ কাজ বা রেকর্ড ফিল্টারিং প্রয়োজন হয় না।
public without sharing class AdminService {
public List<Account> getAllAccounts() {
return [SELECT Id, Name FROM Account];
}
}
Apex কোডের নিরাপত্তা নিশ্চিত করতে বিভিন্ন Security Considerations মেনে চলা উচিত, যাতে ডেটা সুরক্ষা নিশ্চিত হয় এবং ইনজেকশন বা ডেটা লিক প্রতিরোধ করা যায়।
প্রতিটি SOQL এবং DML অপারেশনের আগে Object-Level এবং Field-Level Security যাচাই করা উচিত, যাতে ব্যবহারকারীর অনুমোদিত ডেটা ছাড়া অন্য ডেটা অ্যাক্সেস না হয়।
public class AccountService {
public void updateAccountName(Account acc) {
if (Schema.sObjectType.Account.isUpdateable() && Schema.sObjectType.Account.fields.Name.isUpdateable()) {
update acc;
} else {
throw new CustomException('Insufficient permissions to update Account Name.');
}
}
}
SOQL ইনজেকশন প্রতিরোধ করতে ইনপুট স্যানিটাইজেশন এবং Bind Variables ব্যবহার করা উচিত। ইনপুট সরাসরি SOQL স্টেটমেন্টে যুক্ত না করে, Bind Variables ব্যবহার করা সুরক্ষিত।
public class AccountQuery {
public List<Account> getAccounts(String accountName) {
String sanitizedAccountName = String.escapeSingleQuotes(accountName);
return [SELECT Id, Name FROM Account WHERE Name = :sanitizedAccountName];
}
}
CRUD Permissions যাচাই করা নিশ্চিত করে যে ব্যবহারকারী নির্দিষ্ট অবজেক্ট বা ফিল্ডে অ্যাক্সেস অনুমোদিত কি না। Apex কোডে CRUD অনুমতি যাচাই করতে isCreateable()
, isUpdateable()
, isDeletable()
, এবং isAccessible()
মেথড ব্যবহার করা হয়।
public class AccountCRUD {
public void deleteAccount(Account acc) {
if (Schema.sObjectType.Account.isDeletable()) {
delete acc;
} else {
throw new CustomException('Insufficient permissions to delete Account.');
}
}
}
Exception Handling এবং যথাযথ Logging সিস্টেম ব্যবহার করে নিশ্চিত করুন যে নিরাপত্তা লঙ্ঘন, ইনজেকশন অ্যাটাক বা ডেটা লিক সনাক্ত করা সহজ হয়।
public class AccountService {
public List<Account> getAccounts() {
try {
return [SELECT Id, Name FROM Account];
} catch (Exception e) {
System.debug('Error: ' + e.getMessage());
throw new CustomException('Unable to retrieve Accounts.');
}
}
}
with sharing ব্যবহার করুন: যতটা সম্ভব with sharing
ব্যবহার করুন এবং শুধুমাত্র প্রয়োজন হলে without sharing
ব্যবহার করুন।
CRUD এবং Field-Level Security যাচাই করুন: প্রতিটি DML এবং SOQL অপারেশনের আগে CRUD এবং Field-Level Security যাচাই করা উচিত।
Input Sanitization নিশ্চিত করুন: ইনপুট ভ্যালিডেশন এবং স্যানিটাইজেশন নিশ্চিত করে ইনজেকশন প্রতিরোধ করুন।
Exception Handling এবং Logging: কোডের প্রতিটি গুরুত্বপূর্ণ অংশে Exception Handling এবং যথাযথ Logging নিশ্চিত করুন।
Custom Permissions ব্যবহার করুন: কাস্টম পারমিশন ব্যবহার করে নির্দিষ্ট ফিচারের জন্য ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণ করুন।
Minimal Permissions: প্রোফাইল এবং পারমিশন সেটে ন্যূনতম প্রয়োজনীয় পারমিশন প্রদান করুন।
Apex Sharing Rules ব্যবহারকারীর জন্য নির্দিষ্ট ডেটা এক্সেস নিয়ন্ত্রণ করতে সহায়ক। With Sharing এবং Without Sharing কিওয়ার্ড ব্যবহার করে Apex ক্লাসে শেয়ারিং নিয়ম মেনে চলা বা এড়ানো যায়। একই সাথে, Object-Level, Field-Level, এবং Record-Level Security যাচাই, SOQL ইনজেকশন প্রতিরোধ, এবং CRUD এবং ফিল্ড পারমিশন যাচাই করার মাধ্যমে Apex কোডের নিরাপত্তা নিশ্চিত করা যায়। Proper Exception Handling এবং Logging ব্যবস্থা যুক্ত করে ডেটা সুরক্ষা এবং নির্ভরযোগ্যতা বজায় রাখা সম্ভব।
এই নিরাপত্তা নিয়মগুলো মেনে চলে Salesforce অ্যাপ্লিকেশনকে আরও নিরাপদ ও নির্ভরযোগ্য করে তোলা যায়।
common.read_more